home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh8x / sh83a.d64 / ultraboot maker+ (.txt) < prev    next >
Encoding:
Commodore BASIC  |  1995-03-30  |  6.8 KB  |  233 lines

  1. 1000 REM *** ULTRABOOT MAKER
  2. 1010 POKE 53280,6:POKE 53281,6
  3. 1020 POKE 55,0:POKE 56,37:CLR
  4. 1030 DIM M%(5,20),MF%(9),ME%(9):MF%(0)=999
  5. 1040 PRINT "[147]    [154] *** [213]LTRABOOT [205]AKER ***"
  6. 1050 PRINT "* (C) 1992 [205]ARTIN [208]FOST"
  7. 1060 PRINT " *** MAXIMALE [198]ILELAENGE : 104 [194]LOECKE"
  8. 1070 PRINT:PRINT "[213]LTRABOOT [205]AKER ERSTELLT AUF [196]ISKETTE"
  9. 1080 PRINT "EIN [213]-[198]ILE, WAS SEHR SCHNELL EIN BE -"
  10. 1090 PRINT "STIMMTES [208]ROGRAMM LAEDT ."
  11. 1100 PRINT
  12. 1110 REM *** FILE LADEN
  13. 1120 PRINT " *** [208]ROGRAMM LADEN"
  14. 1130 INPUT "==> [208]ROGRAMMNAME = ";N$
  15. 1140 PRINT "==> [196]ISKETTE MIT '";N$;"' EINLEGEN !"
  16. 1150 GET A$:IF A$="" THEN 1150
  17. 1160 OPEN 1,8,15,"I":GOSUB 2610
  18. 1170 OPEN 2,8,0,N$:GOSUB 2610
  19. 1180 PRINT "  '";N$;"' WIRD GELESEN ."
  20. 1190 GET#2,A$,A$
  21. 1200 FOR I=53120 TO 53212
  22. 1210 READ D:C=C+D:POKE I,D
  23. 1220 NEXT I
  24. 1230 IF C-12129 THEN PRINT "??? [196]ATA-[198]EHLER !":GOTO 2550
  25. 1240 SYS 53120
  26. 1250 EA=PEEK(174)+256*PEEK(175)+1
  27. 1260 BL=INT((EA-9474)/254)+1
  28. 1270 PRINT "     [194]LOECKE : ";BL
  29. 1280 PRINT "     [194]YTES   :";EA-9473
  30. 1290 IF BL>104 THEN PRINT "??? [198]ILE ZU LANG !":GOTO 2550
  31. 1300 CLOSE 2
  32. 1301 OPEN 2,8,2,N$+"+":I=0
  33. 1302 INPUT#1,E:IF E THEN 1309
  34. 1303 PRINT " *** [213]LTRABOOT [205]ENUE-[198]ILE !"
  35. 1304 INPUT#2,MF%(I),ME%(I):I=I+1
  36. 1305 IF ST=0 THEN 1304
  37. 1309 CLOSE 2
  38. 1310 PRINT "==> [196]ISKETTE, DIE [213]LTRABOOT ERHALTEN"
  39. 1320 PRINT "  SOLL, EINLEGEN !"
  40. 1330 GET A$:IF A$="" THEN 1330
  41. 1340 OPEN 2,8,2,"#1":GOSUB 2610
  42. 1350 REM *** FORMATIEREN
  43. 1360 PRINT " *** [198]ORMATIERUNG"
  44. 1370 GOSUB 2760
  45. 1380 T=36:I=0
  46. 1390 DE=0:GS=17:SD=5
  47. 1400 IF BL>84 THEN DE=32:GS=18:SD=5
  48. 1410 IF BL>89 THEN DE=64:GS=19:SD=5
  49. 1420 IF BL>94 THEN DE=96:GS=21:SD=6
  50. 1430 PRINT#2,CHR$(DE)+CHR$(GS);
  51. 1440 PRINT "     [211]EKTOREN PRO [212]RACK :";GS
  52. 1450 PRINT#1,"M-E"+CHR$(23)+CHR$(4)+CHR$(T);
  53. 1460 PRINT "  [212]RACK";T;"WIRD FORMATIERT .[145]"
  54. 1470 GOSUB 2610
  55. 1480 I=I+GS:IF I>BL THEN 1500
  56. 1490 T=T+1:GOTO 1450
  57. 1500 PRINT "  [198]ORMATIERUNG ABGESCHLOSSEN ."
  58. 1510 PRINT " *** [197]INTRAG IM [196]IRECTORY"
  59. 1520 PRINT "  [197]IN FREIER [208]LATZ IM [196]IRECTORY WIRD"
  60. 1530 PRINT "  GESUCHT ."
  61. 1540 REM *** FREIE BLOECKE FINDEN
  62. 1550 PRINT#1,"U1 2 0 18 0":GOSUB 2610
  63. 1560 PRINT#1,"B-P 2 73"
  64. 1570 GET#2,A$:IF A$="" THEN A$=CHR$(0)
  65. 1580 I=0
  66. 1590 IF (ASC(A$) AND 2^I) = 0 THEN M%(0,S)=1
  67. 1600 S=S+1:IF S>18 THEN 1640
  68. 1610 I=I+1: IF I<8 THEN 1590
  69. 1620 GOTO 1570
  70. 1630 REM *** FREIEN EINTRAG FINDEN
  71. 1640 S=1
  72. 1650 PRINT#1,"U1 2 0 18";S:GOSUB 2610
  73. 1660 I=2
  74. 1670 PRINT#1,"B-P 2";I
  75. 1680 GET#2,A$:IF A$="" THEN 1730
  76. 1690 I=I+32:IF I<227 THEN 1670
  77. 1700 PRINT#1,"B-P 2 1"
  78. 1710 GET#2,A$:IF A$<>CHR$(255) THEN S=ASC(A$):GOTO 1650
  79. 1720 NS=S+3:I=0:GOSUB 2670
  80. 1730 ND=NS:NS=18:GOSUB 2670
  81. 1740 PRINT#1,"B-A:0 18";NS
  82. 1750 IF I THEN 1870
  83. 1760 REM *** NEUER DIR-BLOCK
  84. 1770 PRINT#1,"B-A:0 18";ND
  85. 1780 PRINT#1,"B-P 2 0"
  86. 1790 PRINT#2,CHR$(18)+CHR$(ND);
  87. 1800 PRINT#1,"U2 2 0 18";S:GOSUB 2610
  88. 1810 FOR I=0 TO 254
  89. 1820 PRINT#2,CHR$(0);
  90. 1830 NEXT I
  91. 1840 PRINT#2,CHR$(255);
  92. 1850 I=2:S=ND
  93. 1860 REM *** FILE EINTRAGEN
  94. 1870 PRINT#1,"B-P 2";I
  95. 1880 PRINT#2,CHR$(130);
  96. 1890 PRINT#2,CHR$(18)+CHR$(NS);
  97. 1900 PRINT#2,"U"+CHR$(160);
  98. 1910 PRINT#2,LEFT$(N$+"              ",14);
  99. 1920 FOR J=19 TO 29
  100. 1930 PRINT#2,CHR$(0);
  101. 1940 NEXT J
  102. 1950 PRINT#1,"U2 2 0 18";S:GOSUB 2610
  103. 1960 PRINT "  [196]AS [213]-[198]ILE IST EINGETRAGEN IN :"
  104. 1970 PRINT "     [212]RACK   : 18"
  105. 1980 PRINT "     [211]EKTOR  :";S
  106. 1990 PRINT "     [197]INTRAG :";INT(I/32)+1
  107. 2000 REM *** U-FILE SCHREIBEN
  108. 2010 PRINT " *** [213]-[198]ILE SCHREIBEN"
  109. 2020 GOSUB 2760
  110. 2030 PRINT#2,CHR$(DE)+CHR$(GS);
  111. 2040 CLOSE 2
  112. 2050 OPEN 2,8,2,"#0":GOSUB 2610
  113. 2060 GOSUB 2760
  114. 2070 PRINT#1,"B-P 2 207":PRINT#2,CHR$(DE);
  115. 2080 PRINT "  [196]AS [213]-[198]ILE UND [194]OOTPROGRAMM WIRD"
  116. 2090 PRINT "  GESCHRIEBEN IN :"
  117. 2100 PRINT "     [212]RACK   : 18"
  118. 2110 PRINT "     [211]EKTOR  :";NS
  119. 2120 PRINT#1,"U2 2 0 18";NS:GOSUB 2610
  120. 2130 PRINT "  [202]ETZT WIRD DAS [196]ISKETTENBOOTPROGRAMM"
  121. 2140 PRINT "  UND '";N$;"' GESCHRIEBEN ."
  122. 2150 REM *** BLOCK 36/0 SCHREIBEN
  123. 2160 GOSUB 2760
  124. 2170 PRINT#1,"B-P 2 10"
  125. 2180 PRINT#2,CHR$(DE);
  126. 2190 T=36:S=0:I=0:M%(1,0)=1
  127. 2200 POKE 174,1:POKE 175,37
  128. 2210 PRINT#1,"B-P 2 254"
  129. 2215 BZ=0
  130. 2220 GOTO 2400
  131. 2230 REM *** PROGRAMM SCHREIBEN
  132. 2240 PRINT#1,"B-P 2 0"
  133. 2250 SYS 53175
  134. 2260 AD=PEEK(174)+256*PEEK(175)
  135. 2270 IF AD<EA THEN 2400
  136. 2280 A=EA-9474-254*INT((EA-9473)/254)
  137. 2290 E=0:IF (A AND 128)=0 THEN E=1
  138. 2300 IF (A AND 64)=0 THEN E=E+4
  139. 2310 IF (A AND 32)=0 THEN E=E+2
  140. 2320 IF (A AND 16)=0 THEN E=E+8
  141. 2330 IF (A AND 8)=0 THEN E=E+16
  142. 2340 IF (A AND 4)=0 THEN E=E+64
  143. 2350 IF (A AND 2)=0 THEN E=E+32
  144. 2360 IF (A AND 1)=0 THEN E=E+128
  145. 2370 PRINT#2,CHR$(E);CHR$(0);
  146. 2380 GOTO 2480
  147. 2390 REM *** FREIEN BLOCK FINDEN
  148. 2400 NS=S+SD:NT=T:C=GS
  149. 2410 NS=NS+1:IF NS>=GS THEN NS=NS-GS
  150. 2420 IF M%(NT-35,NS)=0 THEN 2450
  151. 2430 C=C-1:IF C>0 THEN 2410
  152. 2440 NT=NT+1:GOTO 2420
  153. 2450 M%(NT-35,NS)=1
  154. 2460 REM *** BLOCK SCHREIBEN
  155. 2461 I=0
  156. 2462 IF MF%(I)>BZ THEN 2470
  157. 2463 IF MF%(I)=BZ THEN A=ME%(I):GOTO 2290
  158. 2464 I=I+1:GOTO 2462
  159. 2470 PRINT#2,CHR$(NS)+CHR$(NT);
  160. 2480 PRINT#1,"M-E"+CHR$(36)+CHR$(4)+CHR$(T)+CHR$(S);
  161. 2490 PRINT "  [212]RACK :";T;"  [211]EKTOR :";S;"[157] [145]"
  162. 2500 GOSUB 2610
  163. 2510 T=NT:S=NS
  164. 2515 BZ=BZ+1
  165. 2520 IF AD<EA THEN 2240
  166. 2530 PRINT:PRINT "  ";N$;" BEFINDET SICH AUF [196]ISKETTE ."
  167. 2540 PRINT "  [218]UM [211]TARTEN '[213]' ABSOLUT LADEN ."
  168. 2550 PRINT#1,"I"
  169. 2560 CLOSE 2:CLOSE 1
  170. 2570 POKE 56,160:CLR
  171. 2580 END
  172. 2590 :
  173. 2600 REM *** DISKSTATUS TESTEN
  174. 2610 INPUT#1,E,E$,ET,ES
  175. 2620 IF E=0 THEN RETURN
  176. 2630 PRINT:PRINT "??? [196]ISK-[198]EHLER !"
  177. 2640 PRINT "   ";E;E$;ET;ES
  178. 2650 GOTO 2550
  179. 2660 REM *** BLOCK IM DIR. FINDEN
  180. 2670 C=18
  181. 2680 IF NS>18 THEN NS=NS-18
  182. 2690 IF M%(0,NS)=0 THEN 2730
  183. 2700 NS=NS+1:C=C-1:IF C THEN 2680
  184. 2710 PRINT "??? [203]EIN [194]LOCK MEHR FREI !"
  185. 2720 GOTO 2550
  186. 2730 M%(0,NS)=1
  187. 2740 RETURN
  188. 2750 REM *** DATEN LESEN
  189. 2760 C=0:PRINT#1,"B-P 2 0"
  190. 2770 READ D:IF D>-1 THEN C=C+D:PRINT#2,CHR$(D);:GOTO 2770
  191. 2780 IF D+C=0 THEN RETURN
  192. 2790 PRINT "??? [196]ATA-[198]EHLER !"
  193. 2800 PRINT "  FALSCHE [208]RUEFSUMME  :";D
  194. 2810 GOTO 2550
  195. 2820 :
  196. 2830 REM *** LOADSAVEROUTINEN
  197. 2840 DATA 162,2,32,198,255,160,0,132,174,169,37,133,175,32,207,255,133,4,169,0
  198. 2850 DATA 162,7,70,4,176,3,29,175,207,202,16,246,230,174,208,2,230,175,145,174
  199. 2860 DATA 165,144,240,225,76,204,255,1,4,2,8,16,64,32,128,169,54,133,1,162,2,32
  200. 2870 DATA 201,255,160,0,177,174,32,210,255,200,192,254,144,246,165,174,105,253
  201. 2880 DATA 133,174,144,2,230,175,169,55,133,1,76,204,255
  202. 2890 REM *** FORMATIERROUTINE
  203. 2900 DATA 165,8,133,81,173,65,4,133,67,173,0,28,41,159,13,64,4,141,0,28,76,0
  204. 2910 DATA 251,32,0,193,162,1,169,10,141,32,6,169,160,141,33,6,169,15,141,34,6
  205. 2920 DATA 172,5,2,132,8,169,224,133,1,165,1,48,252,201,2,176,1,96,76,10,230
  206. 2930 DATA -5531
  207. 2940 REM *** WRITEROUTINE
  208. 2950 DATA 169,3,133,49,173,0,28,41,159,13,61,4,141,0,28,173,62,4,133,67,165,1
  209. 2960 DATA 41,2,208,3,76,152,246,169,208,133,1,76,117,245,32,24,193,173,5,2,133
  210. 2970 DATA 8,173,6,2,133,9,169,226,162,1,134,249,32,125,213,76,153,213,-5930
  211. 2980 REM *** U-FILE TRACK 18
  212. 2990 DATA 0,196,36,3,52,3,202,241,237,246,62,241,47,243,102,254,165,244,237,245
  213. 3000 DATA 169,8,162,226,32,177,255,169,111,32,147,255,189,229,2,32,168,255,232
  214. 3010 DATA 208,247,32,174,255,173,17,208,41,239,141,17,208,120,169,32,141,0,221
  215. 3020 DATA 169,1,133,45,169,8,133,46,160,0,169,0,141,0,221,44,0,221,48,251,162
  216. 3030 DATA 32,234,44,0,221,48,2,38,255,173,0,221,74,74,13,0,221,74,74,13,0,221
  217. 3040 DATA 74,74,13,0,221,142,0,221,145,45,200,208,210,201,255,240,12,165,45,105
  218. 3050 DATA 254,133,45,144,198,230,46,208,194,160,254,177,45,101,45,133,45,144,2
  219. 3060 DATA 230,46,169,199,141,0,221,173,17,208,9,16,141,17,208,88,32,21,253,169
  220. 3070 DATA 0,32,113,168,76,174,167,77,45,69,5,2,238,13,2,238,20,2,174,73,2,224
  221. 3080 DATA 44,208,243,189,197,2,157,0,4,202,16,247,76,17,4,169,3,133,49,173,0,28
  222. 3090 DATA 41,159,9,0,141,0,28,76,209,244,169,36,133,8,74,141,5,28,162,0,134,9
  223. 3100 DATA 232,134,249,169,224,32,125,213,32,153,213,76,17,3,-27947
  224. 3110 REM *** LESEROUTINE 36/0
  225. 3120 DATA 169,4,133,49,173,0,28,41,159,9,0,141,0,28,76,209,244,169,8,133,8,141
  226. 3130 DATA 0,24,172,255,3,173,254,3,132,6,133,7,169,224,162,0,134,249,32,125,213
  227. 3140 DATA 32,24,193,32,153,213,120,160,0,173,0,24,74,176,250,185,0,4,162,10,142
  228. 3150 DATA 0,24,74,74,74,74,166,8,142,0,24,141,0,24,10,41,15,141,0,24,185,0,4,41
  229. 3160 DATA 15,141,0,24,10,41,15,141,0,24,234,169,8,141,0,24,200,208,201,173,254
  230. 3170 DATA 4,172,255,4,208,171,169,18,133,6,169,176,88,133,0,165,0,48,252,76,231
  231. 3180 DATA 235,-12541
  232. 3190 REM *** ENDE
  233.